#pragma once

#include "registerer.h"

class BaseClass1
{
   public:
    BaseClass1() = default;
    ~BaseClass1() = default;
    virtual std::string Name() const
    {
        return "BaseClass1";
    }
};


class DerivedClass1 : BaseClass1
{
   public:
    DerivedClass1() = default;
    ~DerivedClass1() = default;
    virtual std::string Name() const
    {
        return "DerivedClass1";
    }
};

MODULE_REGISTERER(BaseClass1);
#define MODULE1_REGISTER_TEST(name) MODULE_CLASS(BaseClass1, name)
MODULE1_REGISTER_TEST(DerivedClass1);



class BaseClass2
{
   public:
    BaseClass2() = default;
    ~BaseClass2() = default;
    virtual std::string Name() const
    {
        return "BaseClass2";
    }
};

class DerivedClass2 : BaseClass2
{
   public:
    DerivedClass2() = default;
    ~DerivedClass2() = default;
    virtual std::string Name() const
    {
        return "DerivedClass2";
    }
};

MODULE_REGISTERER(BaseClass2);
#define MODULE2_REGISTER_TEST(name) MODULE_CLASS(BaseClass2, name)
MODULE2_REGISTER_TEST(DerivedClass2);